JQuery Kochbuch (German Edition) by jQuery Community Experts

JQuery Kochbuch (German Edition) by jQuery Community Experts

Autor:jQuery Community Experts [Experts, jQuery Community]
Die sprache: eng
Format: epub
Tags: COMPUTERS / Programming Languages / JavaScript
ISBN: 9783868995756
Herausgeber: O'Reilly Verlag
veröffentlicht: 2012-05-29T22:00:00+00:00


Note

Da wir das change-Event bei jeder Validierung entbinden und wieder binden, habe ich den Event-Namensraum .isValid hinzugefügt, um es direkte ansprechen zu können. Hat ein Form-Element andere change-Events gebunden, dannbleiben sie so erhalten.

Das Problem am vorigen Code ist nicht die Syntax sondern die Logik. Die Radio Buttons im HTML-Code haben das Attribut class="required". Das bedeutet, beim Validieren der gesamten Form wird jeder Radio Button validiert und (noch wichtiger) jedes <label> eines Radio Button erhält eine Klasse (oder sie wird wieder entfernt), um den Fehler anzuzeigen. Wenn wir aber eine Revalidierung mit dem Element-spezifischen change-Event erlauben, wird nur das <label> des entsprechenden Radio Buttons aktualisiert – die anderen behalten ihren Fehlerstatus bei. Um dies zu beheben, muss ein einzelnes change-Event alle Radio Buttons in der name-Gruppe begutachten, um die Klassen aller <label>s simultan anzupassen:

// anstatt $(selector).method nutzen wir $(selector)[method] // wähle die richtige Methode, aber wähle weise var method = isValid ? 'removeClass' : 'addClass'; // Fehlermeldung zeigen [addClass] // Fehlermeldung verbergen [removeClass] $('#errorMessage_' + name)[method]('showErrorMessage'); if ( type == 'checkbox' || type == 'radio' ) { // Bei Radio Button oder Checkbox alle Inputs mit dem gleichen Namen finden $('input[name="' + name + '"]').each(function(){ // Alle <label>-Tags der Inputs anpassen, (this==<input>) $('label[for="' + this.id + '"]')[method]('error'); }); } else { // Für alle anderen Inputs nur ein <label> anpassen $('label[for="' + id + '"]')[method]('error'); } // nach der initialen Validierung beim Ändern revalidieren können $element .unbind('change.isValid') .bind('change.isValid',function(){ validateElement.isValid(this); });

Hätten wir diesen Code mit der Punkt-Syntax geschrieben, hätte er doppelt so viele Zeilen gehabt. Und mit dieser neuen Logik benötigt nur ein Radio Button (oder eine Checkbox) in einer name-Gruppe das Attribut class="required", damit alle anderen Elemente in dieser Gruppe ebenfalls korrekt angepasst werden.

Was geschieht, wenn JavaScript deaktiviert ist? Die Form wird ohne Validierung auf Client-Seite abgeschickt. Stellen Sie daher immer sicher, dass Sie auch auf Server-Seite eine Überprüfung vornehmen. Verlassen Sie sich nicht nur auf JavaScript. Gibt der Code auf Server-Seite die Form mit Fehlern zurück, dann können die gleichen Klassen für die gleichen Elemente genutzt werden. Sie brauchen keine Inline-Style-Tags oder eigenen Code, um die vom Server gemeldeten Fehler anders zu behandeln.



Download



Haftungsausschluss:
Diese Site speichert keine Dateien auf ihrem Server. Wir indizieren und verlinken nur                                                  Inhalte von anderen Websites zur Verfügung gestellt. Wenden Sie sich an die Inhaltsanbieter, um etwaige urheberrechtlich geschützte Inhalte zu entfernen, und senden Sie uns eine E-Mail. Wir werden die entsprechenden Links oder Inhalte umgehend entfernen.